package cn.edu.jsu.nrs.dao;

import java.util.List;

import cn.edu.jsu.nrs.model.News;

public interface NewsDao {

	/**
	 * 保存新闻
	 * @param news
	 * @return
	 */
	public int save(News news);

	/**
	 *  更新新闻
	 * @param news
	 */
	public void update(News news);

	/**
	 *  删除新闻
	 * @param news
	 */
	public void delete(News news);

	/**
	 * 根据id删除新闻
	 * @param id
	 * @return
	 */
	public int deleteNewsById(int id);

	/**
	 * 批量删除新闻
	 * @param newslist
	 */
	public void deleteNewsList(List<News> newslist);

	/**
	 *  根据id查询新闻
	 * @param id
	 * @return
	 */
	public News queryNewsById(int id);

	/**
	 * 根据新闻类型Id查询所有新闻
	 * @param typeId
	 * @return
	 */
	public List<News> queryNewsByTypeId(int typeId);

	/**
	 * 查询10条热点新闻
	 * @param first
	 * @param count
	 * @return
	 */
	public List<News> queryHotNews(final int first, final int count);

	/***
	 *  查询10条热点新闻
	 * @param typeId
	 * @return
	 */
	public List<News> queryHotNewsByTypeId(int typeId);

	/***
	 * 查询10条即时新闻
	 * @param first
	 * @param count
	 * @return
	 */
	public List<News> queryTopNews(final int first, final int count);

	/***
	 * 查询10条即时新闻
	 * @param typeId
	 * @return
	 */
	public List<News> queryTopNewsByTypeId(int typeId);

	/**
	 * 根据类型Id查找新闻列表
	 * @param typeId
	 * @param count
	 * @return
	 */
	public List<News> queryNewsListByTypeIdAndCount(final int typeId,final int count);
	/***
	 * 查询新闻的总记录数
	 * @return
	 */
	public int queryNewsCounts();

	/***
	 * 根据新闻类别查询新闻的总记录数
	 * @param typeId
	 * @return
	 */
	public int queryNewsCounts(int typeId);

	/***
	 * 根据新闻类型Id查询新闻的总页数
	 * @param typeId
	 * @param size
	 * @return
	 */
	public long pageCountByTypeId(int typeId, int size);

	/*
	 * //根据新闻类型Id查询新闻的总页数 public long pageCountByUserId(int userId,int size);
	 */
	// 新闻分页
	public List<News> paging(int index, int size, String propertyName);

	/**
	 * 根据类别查询分页新闻 新闻分页
	 */
	public List<News> pagingByTypeId(final int typeId, final int beginIndex,
			final int size);

	// 添加点击数
	public void addClickCount();
	
	/***
	 * 根据关键字条件模糊查询新闻	
	 * @param beginIndex
	 * @param count
	 * @param keyword
	 * @param sord
	 * @param sidx
	 * @return
	 */
	public List<News> queryNewsListBySearch(final int beginIndex,final int count,final String keyword,final String sord,final String sidx);
	
	/**
	 * 根据关键字条件模糊查询新闻记录条数
	 */
	public int queryNewsCounts(final String keyword);
}
